home *** CD-ROM | disk | FTP | other *** search
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; Rumour PPE for Atlantis v1.0 [Add-On]
- ; Written by Jolly Roger
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; Please modify it so it suits your needs.
- ; If you decide to use one of my functions/code in your own program
- ; you MUST mention the original writer in the doc/nfo - That's me :)
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; This is INDEED a very simple PPE, in the near? future there will be
- ; another release of this Add-On. Probably v1.1 or something..
- ; ( Time is not on my side these days )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- DECLARE FUNCTION RequestKey() STRING
- DECLARE PROCEDURE SetupItems(INTEGER TotalItems)
- DECLARE PROCEDURE SetNewHighlighted(INTEGER Highlighted, INTEGER Before)
- ;────────────────────────────────────────────────────────────────────────────
- INTEGER TotalItemsInMenu, Temp, Total
- INTEGER CurrentHighlighted, LastHighlighted
- ;────────────────────────────────────────────────────────────────────────────
- STRING ReturnKey, TempString, BadWords(50) 'that should be enough..
- STRING ItemNormal(3), ItemHighlighted(3), Answer
- INTEGER FirstX, FirstY, EditX, EditY
-
- *$USEFUNCS
-
- BEGIN
-
- IF (ANSION() = FALSE) THEN
- PRINTLN "Error: You can't use this program without ANSI-Emulation"
- NEWLINE
- WAIT
- END
- END IF
- FOPEN 1, PPEPATH() + "RUMOUR.DAT", O_RW, S_DN
- FGET 1, Total
- FCLOSE 1
- EditX = 6
- EditY = 14
- FirstX = 20
- FirstY = 15
- GETUSER
- ItemHighlighted(1) = "@X4F ADD A NEW JUICY RUMOUR "
- ItemHighlighted(2) = "@X4F LIST RUMOURS "
- ItemHighlighted(3) = "@X4F QUIT RUMOURS "
- ItemNormal(1) = "@X07 Add A New Juicy Rumour "
- ItemNormal(2) = "@X07 List Rumours "
- ItemNormal(3) = "@X07 Quit Rumours "
- STARTDISP FNS
- DISPFILE PPEPATH() + "RUMOUR1.PCB", 0
- TotalItemsInMenu = 3
- CurrentHighlighted = 1
- LastHighlighted = CurrentHighlighted
- SetupItems(TotalItemsInMenu)
- SetNewHighlighted(CurrentHighlighted, LastHighlighted)
-
- :MainLoop
-
- ReturnKey = RequestKey()
- SELECT CASE (UPPER(ReturnKey))
- CASE "UP", "LEFT", "A"
- LastHighlighted = CurrentHighlighted
- IF (CurrentHighlighted = 1) THEN
- CurrentHighlighted = TotalItemsInMenu
- ELSE
- CurrentHighlighted = CurrentHighlighted - 1
- END IF
- SetNewHighlighted(CurrentHighlighted, LastHighlighted)
- CASE "DOWN", "RIGHT", "Z"
- LastHighlighted = CurrentHighlighted
- IF (CurrentHighlighted = TotalItemsInMenu) THEN
- CurrentHighlighted = 1
- ELSE
- CurrentHighlighted = CurrentHighlighted + 1
- END IF
- SetNewHighlighted(CurrentHighlighted, LastHighlighted)
- CASE CHR(27)
- PRINT "@X07@CLS@"
- PRINTLN "@X09Rumour PPE @X01-@X09 Add-ON for Atlantis v1.0@X01 - @X09Written by@X01:@X09 Jolly Roger@X07"
- NEWLINE
- END
- CASE CHR(13)
- '// PPLC v3.1 does not support a nested
- '// SELECT CASE. PPLC v3.2 does, however I don't have it :(
- IF (CurrentHighlighted = 1) THEN
- IF (Total < 200) THEN 'Maximum Atlantis supports..
- DISPFILE PPEPATH() + "RUMOUR2.PCB", 0
- ANSIPOS EditX, EditY
- INPUTSTR "_", Answer, "@X0F", 68, MASK_ASCII(), DEFS
- Answer = SCRTEXT(EditX, EditY, 68, TRUE)
- Answer = STRIPATX(Answer)
- IF (TRIM(Answer, " ") <> "") THEN
- FOPEN 1, PPEPATH() + "RUMOUR.DAT", O_RW, S_DN
- FPUT 1, STRING(Total + 1)
- FCLOSE 1
- FAPPEND 1, PPEPATH() + "RUMOUR.DAT", O_RW, S_DN
- FPUTLN 1, Answer
- FPUTLN 1, "Entered by: " + U_NAME()
- FCLOSE 1
- END IF
- PRINT "@X07@CLS@"
- STARTDISP FNS
- DISPFILE PPEPATH() + "RUMOUR1.PCB", 0
- SetupItems(TotalItemsInMenu)
- SetNewHighlighted(CurrentHighlighted, LastHighlighted)
- END IF
- END IF
- IF (CurrentHighlighted = 2) THEN
- PRINT "@X07@CLS@"
- RESETDISP
- PRINT "@PON@"
- FOPEN 1, PPEPATH() + "RUMOUR.DAT", O_RW, S_DN
- FGET 1, Total
- FOR Temp = 1 TO Total
- FGET 1, TempString
- PRINTLN "@X08[@X0F" + STRING(Temp) + "@X08] - @X07" + TempString
- FGET 1, TempString
- NEXT
- FCLOSE 1
- NEWLINES 2
- WAIT
- PRINT "@POFF@"
- STARTDISP FNS
- DISPFILE PPEPATH() + "RUMOUR1.PCB", 0
- SetupItems(TotalItemsInMenu)
- SetNewHighlighted(CurrentHighlighted, LastHighlighted)
- END IF
- IF (CurrentHighlighted = 3) THEN
- PRINT "@X07@CLS@"
- PRINTLN "@X09Rumour PPE @X01-@X09 Add-ON for Atlantis v1.0@X01 - @X09Written by@X01:@X09 Jolly Roger@X07"
- NEWLINE
- END
- END IF
- CASE "HOME"
- LastHighlighted = CurrentHighlighted
- CurrentHighlighted = 1
- SetNewHighlighted(CurrentHighlighted, LastHighlighted)
- CASE "END"
- LastHighlighted = CurrentHighlighted
- CurrentHighlighted = TotalItemsInMenu
- SetNewHighlighted(CurrentHighlighted, LastHighlighted)
- END SELECT
- GOTO MainLoop
-
- FUNCTION RequestKey() STRING
- LET ReturnKey = ""
- WHILE (ReturnKey = "") DO
- LET ReturnKey = INKEY()
- IF (ReturnKey = "BADKEY") ReturnKey = ""
- ENDWHILE
- RequestKey = ReturnKey
- ENDFUNC
-
-
- PROCEDURE SetupItems(INTEGER TotalItems)
- FOR Temp = 1 TO TotalItems
- ANSIPOS FirstX, FirstY + Temp - 1
- PRINT ItemNormal(Temp)
- NEXT
- END PROC
-
- PROCEDURE SetNewHighlighted(INTEGER Highlighted, INTEGER Before)
- ANSIPOS FirstX, FirstY + Before - 1
- PRINT ItemNormal(Before)
- ANSIPOS FirstX, FirstY + Highlighted - 1
- PRINT ItemHighlighted(Highlighted)
- ANSIPOS FirstX, FirstY + Highlighted - 1
- END PROC
-